/* 
 * File:   AbstractShapeContainer.h
 * Author: brady
 *
 * Created on June 9, 2011, 7:09 PM
 */

#ifndef INTERSECTIONSTRUCTURE_H
#define	INTERSECTIONSTRUCTURE_H
#include <shapes/Shape.h>
#include <vector>

using namespace std;

class IntersectionStructure {
public:
    IntersectionStructure();
    IntersectionStructure(const IntersectionStructure& orig);
    virtual ~IntersectionStructure();
    virtual void addShape(Shape* shape) = 0;
    virtual void finalize() = 0;
    virtual IntersectionResult getFirstIntersection(IntersectionParams& ip) = 0;
    virtual vector<IntersectionResult> getAllIntersections(IntersectionParams& ip) = 0;
    virtual IntersectionResult getAnyIntersection(IntersectionParams& ip) = 0;
    virtual BoundingBox getBoundingBox() = 0;
private:

};

#endif	/* INTERSECTIONSTRUCTURE_H */

